package machine

import (
	"io/ioutil"
	"mayfly-go/base/biz"
)

const BasePath = "./devops/infrastructure/machine/shell/"

// const MonitorTemp = "cpuRate:{cpuRate}%,memRate:{memRate}%,sysLoad:{sysLoad}\n"

// shell文件内容缓存，避免每次读取文件
var shellCache = make(map[string]string)

// func (c *Cli) GetProcessByName(name string) (*string, error) {
// 	return c.Run(getShellContent("sys_info"))
// }

// func (c *Cli) GetSystemInfo() (*string, error) {
// 	return c.Run(getShellContent("system_info"))
// }

// func (c *Cli) GetMonitorInfo() *entity.MachineMonitor {
// 	mm := new(entity.MachineMonitor)
// 	res, _ := c.Run(getShellContent("monitor"))
// 	if res == nil {
// 		return nil
// 	}
// 	resMap := make(map[string]interface{})
// 	utils.ReverStrTemplate(MonitorTemp, *res, resMap)

// 	err := utils.Map2Struct(resMap, mm)
// 	if err != nil {
// 		global.Log.Error("解析machine monitor: %s", err.Error())
// 		return nil
// 	}
// 	mm.MachineId = c.machine.Id
// 	mm.CreateTime = time.Now()
// 	return mm
// }

// 获取shell内容
func getShellContent(name string) string {
	cacheShell := shellCache[name]
	if cacheShell != "" {
		return cacheShell
	}

	bytes, err := ioutil.ReadFile(BasePath + name + ".sh")
	biz.ErrIsNil(err, "获取shell文件失败")
	shellStr := string(bytes)
	shellCache[name] = shellStr
	return shellStr
}
